home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
SCIENTIF
/
1080.ZIP
/
SOURCE.ARC
/
H2O2.BAS
< prev
Wrap
BASIC Source File
|
1987-12-30
|
48KB
|
1,257 lines
REM ************************************************************
REM * *
REM * H2O2 VERSION 3.12 *
REM * *
REM * PROGRAM BY KERRY HICKS, MS *
REM * *
REM * (c) DEC. 1987 *
REM * *
REM ************************************************************
REM ************************************************************
REM * *
REM * SOME OF THE MORE IMPORTANT GLOBAL VARIABLES: *
REM * *
REM * SPECIES NUMBER OF DISTINCT CONSTITUENTS (SPECIES) *
REM * N(I) NUMBER OF MOLES OF ITH CONSTITUENT *
REM * N$(I) NAME OF ITH CONSTITUENT *
REM * X(I) MOLE FRACTION OF ITH CONSTITUENT *
REM * XC(I) AS ABOVE, CHAMBER CONDITIONS *
REM * XE(I) AS ABOVE, EXIT FOR EQUILIBRIUM FLOW *
REM * N INTERMEDIATE CALC. OF TOTAL # OF MOLES *
REM * NN INTERMEDIATE/FINAL CALC. OF TOTAL # OF MOLES *
REM * T TEMP INDEX (ACTUAL TEMP=T*100 *
REM * (EXCEPTION: USED AS DUMMY TEMP IN SEVERAL *
REM * PLACES WHILE INTERPOLATING BETWEEN INTEGRAL *
REM * VALUES.) *
REM * TC ADIABATIC FLAME TEMP INDEX *
REM * TE EXIT TEMP FOR EQUILIBRIUM FLOW *
REM * T1 & T2 INDICIES OF TEMPS BRACKETING TC OR TE *
REM * TMIN LOWER TEMPERATURE OF DATA SUPPLIED/100 *
REM * TMAX UPPER TEMPERATURE OF DATA SUPPLIED/100 *
REM * LIMIT THE LOWER TEMPERATURE/100 THAT CAN BE SAFELY *
REM * USED W/O RISKING A MATHEMATICAL OVERFLOW *
REM * P PRESSURE OF COMBUSTION CHAMBER *
REM * PE EXIT PRESSURE FOUND IN FROZEN FLOW CALC. *
REM * NP (N/P)^.5 -- SHORTHAND FOR A COMMON TERM *
REM * K(T,I) KP OF ITH CONSTITUENT AT TEMP T *
REM * Q SUM OF HEATS OF VAPORIZATION AND SUM OF Q *
REM * NEEDED TO RAISE REACTANTS FROM VAP. POINT *
REM * TO 298 K (Q1+Q2 IN THE NOTES) *
REM * QLOW QNET CORRESPONDING TO T1 *
REM * QHIGH QNET CORRESPONDING TO T2 *
REM * QO(I) Q LEAVING THE SYSTEM FROM FORMATION OF ITH *
REM * CONSTITUENT (Q3(I)'S IN THE NOTES) *
REM * Q3 NEGATIVE OF THE SUM OF QO(I)'S (QOUT IN THE *
REM * NOTES) *
REM * QI(T,I) Q NEEDED TO RAISE ITH COMPONENT FROM 298 K *
REM * TO T (Q4(I,T)'S IN THE NOTES) *
REM * QIN SUM OF QI(T,I)'S AT A GIVEN TEMP AND Q (QIN *
REM * IN THE NOTES) *
REM * QNET SUM OF Q'S INTO THE SYSTEM (Q1+Q2+Q4-Q3 IN *
REM * THE NOTES) *
REM * LASTQ QNET FROM THE PREVIOUS TEMP *
REM * S(T,I) ENTROPY OF ITH SPECIES AT TEMP T *
REM * SC ENTROPY OF COMBUSTION CHAMBER *
REM * SE ENTROPY AT CURRENT TEMP *
REM * SLOW SNET CORRESPONDING TO T1 *
REM * SHIGH SNET CORRESPONDING TO T2 *
REM * SNET MW*SC-MC*SE *
REM * MW MOLECULAR WEIGHT AT CURRENT TEMP *
REM * MC MOLECULAR WEIGHT OF COMBUSTOR MIX *
REM * ME MOLECULAR WEIGHT OF EXHAUST GAS (EQ. FLOW) *
REM * R GAS CONSTANT USED AS BOTH UNIVERSAL AND AS *
REM * CONSTANT FOR COMPOSITION UNDER CONSIDERATION *
REM * *
REM ************************************************************
REM ************************************************************
REM * *
REM * SOME OF THE MORE IMPORTANT LOCAL VARIABLES: *
REM * *
REM * XL & XR USED IN BISECTION SUBROUTINE *
REM * TL & TR USED IN ROUTINE FOR TC AND TE *
REM * NUMIT FAIL-SAFE -- COUNTS ITERATIONS TO PREVENT *
REM * INFINITE LOOPS *
REM * I & J USED AS INDICES THROUGHOUT PROGRAM *
REM * *
REM ************************************************************
REM ************************************************************
REM * *
REM * DETAILS ON N(I) AND X(I) *
REM * *
REM * I=1 DIATOMIC HYDROGEN *
REM * I=2 DIATOMIC OXYGEN *
REM * I=3 WATER *
REM * I=4 MONATOMIC HYDROGEN *
REM * I=5 MONATOMIC OXYGEN *
REM * I=6 HYDROXYL (OH) *
REM * *
REM ************************************************************
REM ************************************************************
REM * *
REM * USER DEFINED FUNCTIONS *
REM * *
REM * FNA INTERPOLATES BETWEEN VALUES *
REM * FNBX INTERMEDIATE VALUE TO BE USED IN FNO2 *
REM * FNO2 NUMBER OF MOLES OF O2 -- ALSO EQUAL TO N(2) *
REM * FNH2O NUMBER OF MOLES OF H2O -- ALSO EQUAL TO N(3) *
REM * FNH NUMBER OF MOLES OF H -- ALSO EQUAL TO N(4) *
REM * FNO NUMBER OF MOLES OF O -- ALSO EQUAL TO N(5) *
REM * FNOH NUMBER OF MOLES OF OH -- ALSO EQUAL TO N(6) *
REM * FNAR AREA RATIO FROM GAMMA AND EXIT MACH NUMBER *
REM * *
REM ************************************************************
REM ************************************************************
REM * *
REM * MAJOR PROGRAM SECTIONS *
REM * *
REM * LINE/LABEL: DESCRIPTION: *
REM * ----------- ------------ *
REM * 1000-1490 DATA INPUT AND SETUP *
REM * *
REM * 1500-1820 ADIABATIC FLAME TEMP CALCS *
REM * *
REM * 2000-2450 FROZEN FLOW CALCULATIONS *
REM * *
REM * 2500-2995 EQUILIBRIUM FLOW CALCULATIONS *
REM * *
REM * 3500-3745 COMPOSITION SUBROUTINE *
REM * *
REM * 4000-4045 QNET SUBROUTINE *
REM * *
REM * 4500-4680 PRINT SUBROUTINE *
REM * *
REM * 5000-5035 MOLECULAR WEIGHT SUBROUTINE *
REM * *
REM * 5500-5545 ENTROPY SUBROUTINE *
REM * *
REM * 6000-6125 MACH NUMBER SUBROUTINE *
REM * *
REM * OOPS ABORT AND DUMP ROUTINE *
REM * *
REM * TCALC THRUST CALCULATION *
REM * *
REM ************************************************************
1000 COLOR 1,7,7 : CLS
PRINT " H H OOOOO"
PRINT " H H O O"
PRINT " HHHHHH 222 O O 222"
PRINT " H H 2 2 O O 2 2"
PRINT " H H 2 OOOOO 2"
PRINT " 2222 2222"
PRINT " 2 2"
PRINT " 22222 22222"
PRINT " "
PRINT " "
PRINT " "
PRINT " "
PRINT " HYDROGEN/OXYGEN ROCKET ENGINE ANALYSIS PROGRAM"
PRINT
PRINT " Version 3.12"
PRINT
PRINT " (c) December, 1987"
PRINT
PRINT " Software Package by Kerry Hicks, MS"
PRINT
PRINT " Free Software for Poor Engineering Students"
PRINT : PRINT
PRINT " Hit Any Key to Continue......."; : COLOR 7
A$=""
1010 A$=INKEY$
IF A$="" THEN 1010
COLOR 7,1,1
CLS
ON ERROR GOTO OOPS
DIM K(60,7), QO(7), QI(60,7), N(7), X(7), S(60,7), N$(7)
DIM M(7), CP(60,7), XC(7), XE(7)
PRINT
DEFINT I-J
REM ****************INSERT FORMULAS HERE**********************
DEF FNA(X1,Y1,X2,Y2,X)=Y1+((X-X1)/(X2-X1))*(Y2-Y1)
DEF FNBX(K3,K6,N1,NP)=(2*K3*N1*(NP^-1))+(K6*N1^.5)
DEF FNO2(K4,N1,B,NP)=((2*MH2-(2*N1)-(K4*NP*N1^.5))/B)^2
DEF FNW(K3,N1,N2,NP)=K3*N1*(NP^-1)*N2^.5
DEF FNH(K4,N1,NP)=K4*NP*N1^.5
DEF FNO(K5,N2,NP)=K5*NP*N2^.5
DEF FNOH(K6,N1,N2)=K6*(N1*N2)^.5
DEF FNAR(M,G)=(1/M)*((2/(G+1))*(1+((G-1)/2)*M^2))^((G+1)/(2*(G-1)))
TMIN=1 : TMAX=60 : SPECIES=6 : LIMIT=TMIN : IERROR=0
R=1.9872
REM ***************READ QO'S (Q3 IN NOTES)*******************
READ QO(1), QO(2), QO(3), QO(4), QO(5), QO(6)
REM ***READ KP(T)'S, QI(T)'S (KP'S AND Q4'S IN THE NOTES),
REM S(T)'S AND CP(T)'S***
FOR I=1 TO SPECIES
READ N$(I), M(I)
PRINT " READING DATA FOR ";N$(I)
FOR T=TMIN TO TMAX
READ K(T,I), QI(T,I), S(T,I), CP(T,I)
REM CHECK IF 10^(LOG K) WILL CAUSE AN OVERFLOW
IF ABS(K(T,I))<35 THEN 1245
IF LIMIT<=T THEN LIMIT=T+1
K(T,I)=-99 : GOTO 1250
1245 K(T,I)=10^K(T,I)
1250 NEXT T
PRINT
NEXT I
REM IF LIMIT>1 THEN WE IGNORED SOME DATA. PRINT WARNING IF SO.
IF LIMIT=1 THEN 1310
PRINT
PRINT " WARNING--TEMPERATURES < ";LIMIT*100;" KELVIN MAY CAUSE A MATHEMATICAL"
PRINT " OVERFLOW. IF TEMPERATURES THIS LOW ARE NEEDED";CHR$(44);" THE PROGRAM"
COLOR 20 : PRINT " COULD"; : COLOR 7
PRINT " FAIL...BUT IT IS UNLIKELY THAT TEMPERATURES THIS LOW WILL"
PRINT " BE NEEDED FOR CONVENTIONAL ENGINES."
PRINT
1310 INPUT " OUTPUT FILE (ENTER LPT1: FOR PRINTER)";A$
IF A$="" THEN PRINT " BAD FILE NAME!" : GOTO 1310
OPEN A$ FOR OUTPUT AS #1
PRINT #1, " "
PRINT #1, TAB(26) "H H OOOOO "
PRINT #1, TAB(26) "H H O O "
PRINT #1, TAB(26) "HHHHHH 222 O O 222 "
PRINT #1, TAB(26) "H H 2 2 O O 2 2"
PRINT #1, TAB(26) "H H 2 OOOOO 2"
PRINT #1, TAB(26) " 2222 2222 "
PRINT #1, TAB(26) " 2 2 "
PRINT #1, TAB(26) " 22222 22222"
PRINT #1, " "
PRINT #1, " "
PRINT #1, " "
PRINT #1, " "
PRINT #1, TAB(20) "HYDROGEN/OXYGEN ROCKET ENGINE ANALYSIS PROGRAM"
PRINT #1, " "
PRINT #1, TAB (37) "Version 3.12"
PRINT #1, " "
PRINT #1, TAB(34) "(c) December, 1987"
PRINT #1, " "
PRINT #1, TAB(25) "Software Package by Kerry Hicks, MS"
PRINT #1, " "
PRINT #1, " "
PRINT #1, " "
PRINT #1, " "
PRINT #1, " "
PRINT #1, " "
PRINT #1, " "
PRINT #1, " "
1345 INPUT " ENTER AN IDENTIFYING TITLE FOR OUTPUT";A$
IF A$="" THEN A$="An Untitled Engine."
INPUT " CHAMBER PRESSURE IN ATMOSPHERES";P
1350 INPUT " NOZZLE THROAT AREA IN SQUARE FEET";ATHROAT
IF ATHROAT<=0 THEN
PRINT
PRINT " You have entered a number which is physically impossible."
PRINT
GOTO 1350
END IF
1360 INPUT " NOZZLE EXIT AREA IN SQUARE FEET";AEXIT
IF AEXIT<=0 THEN
PRINT
PRINT " You have entered a number which is physically impossible."
PRINT
GOTO 1360
END IF
AREAR=AEXIT/ATHROAT
IF AREAR<1 THEN
PRINT
PRINT " Your nozzle converges -- this version of H2O2 cannot handle this."
PRINT " Start Over!"
PRINT
GOTO 1350
END IF
PRINT " MASS FLOW RATIO OF OXYGEN TO HYDROGEN (EXAMPLE: FOR A MASS"
PRINT " FLOW RATIO OF 5:1 ENTER 5,1)"; : INPUT A,B
MH2=(15.8740*B)/A : NN=MH2 : Q=(MH2*.216+1.5907)+(MH2*1.86924+1.53)
A$="Analysis of "+A$
IF LEN(A$)<=84 THEN
CEN=(85-LEN(A$))/2
PRINT #1, TAB(CEN) A$
ELSE
PRINT #1, A$
END IF
PRINT #1, " "
A$="Study Initiated on "+date$+" at "+time$
CEN=(85-LEN(A$))/2
PRINT #1, TAB(CEN) A$
PRINT #1, " " : PRINT #1, " " : PRINT #1, " "
PRINT #1, "ENGINE SPECS:"
PRINT #1, "-------------"
PRINT #1, " "
PRINT #1, "AREA OF NOZZLE THROAT ";
PRINT #1, USING "#.####^^^^";ATHROAT;
PRINT #1, " SQUARE FEET"
PRINT #1, "AREA OF NOZZLE EXIT ";
PRINT #1, USING "#.####^^^^";AEXIT;
PRINT #1, " SQUARE FEET"
PRINT #1, "AREA RATIO: ";
PRINT #1, USING "####.##";AREAR;
PRINT #1, " : 1"
PRINT #1, "CHAMBER PRESSURE ";
PRINT #1, USING "#.####^^^^";P;
PRINT #1, " ATM"
PRINT #1, "OXYGEN TO HYDROGEN MASS FLOW RATE: ";
PRINT #1, USING "###.###";A;
PRINT #1, " : ";
PRINT #1, USING "###.###";B
PRINT #1, " "
1490 CLS
1500 REM **********************************************************
REM * ADIABATIC FLAME TEMPERATURE CALCULATIONS *
REM **********************************************************
REM
REM FIND ADIABATIC FLAME TEMPERATURE (TC)
FOR I=1 TO 11 : PRINT : NEXT I
COLOR 27
PRINT " Working on Adiabatic Flame Temperature (TC)."
COLOR 7
T1=LIMIT : T2=TMAX
1550 IF T2-T1 < 2 THEN 1585
T=INT((T1+T2)/2)
GOSUB 3500 : GOSUB 4000
IF QNET>0 THEN T2=T : IFLAG=2 : GOTO 1550
IF QNET<0 THEN T1=T : IFLAG=1 : GOTO 1550
REM ACCIDENTALLY FOUND QNET=ZERO (TC)
TC=T : GOTO 1745
1585 IF IFLAG<>2 THEN 1605
QHIGH=QNET
T=T1 : GOSUB 3500 : GOSUB 4000 : QLOW=QNET
GOTO 1615
1605 QLOW=QNET
T=T2 : GOSUB 3500 : GOSUB 4000 : QHIGH=QNET
1615 REM
REM ITERATE BETWEEN THE ENCLOSING TEMPERATURES TO GET TC
REM
TL=T1 : TR=T2
REM INTERPOLATE BETWEEN Q(T1) AND Q(T2) TO GET A FIRST GUESS
REM FOR ADIABATIC FLAME TEMP -- TC
TC=FNA(QLOW,T1,QHIGH,T2,0)
REM ENTER A "WHILE-DO" LOOP TO ITERATE ON TC UNTIL ABS(QNET) IS
REM LESS THAN 5E-04 OR TR-TL IS LESS THAN .005 (ACCURATE TO 1 DEGREE)
1660 IF TR-TL<.005 THEN 1745
T=0 : REM DUMMY TEMP
REM INTERPOLATE BETWEEN JANNAF TABLE VALUES
FOR J=1 TO SPECIES
K(0,J)=FNA(T1,K(T1,J),T2,K(T2,J),TC)
NEXT J
REM *****FIND COMPOSITION AT THIS TEMP*****
GOSUB 3500
REM *****FIND QNET AT THIS TEMP*****
FOR J=1 TO SPECIES
QI(0,J)=FNA(T1,QI(T1,J),T2,QI(T2,J),TC)
NEXT J
GOSUB 4000
REM ADJUST OUR GUESS AT TC AND DO THIS ALL OVER AGAIN
IF ABS(QNET)<.0005 THEN 1745
IF QNET>0 THEN TR=TC : TC=(TL+TR)/2 : GOTO 1660
IF QNET<0 THEN TL=TC : TC=(TL+TR)/2 : GOTO 1660
1745 REM QNET IS EITHER ZERO OR CLOSE TO IT, SO WE MUST HAVE FOUND TC
REM SAVE THE IMPORTANT VALUES:
T=TC : MC=MW : FOR I=1 TO SPECIES : XC(I)=X(I) : NEXT I
FOR I=1 TO SPECIES
S(0,I)=FNA(T1,S(T1,I),T2,S(T2,I),TC)
NEXT I
REM *****FIND SC*****
PTEMP=PE : PE=P : GOSUB 5500 : PE=PTEMP
SC=SE : REM SAVE THE VALUE
REM PRINT THE DATA FOR TC
PRINT #1, " "
PRINT #1, "ADIABATIC FLAME TEMPERATURE: ";
PRINT #1, USING "####.#";TC*100;
PRINT #1, " Kelvin"
PRINT #1, " "
PRINT #1, " "
PRINT #1, TAB(17) "********** COMBUSTION CHAMBER DETAILS ***********"
PRINT #1, TAB(17) " --------------------------"
PRINT #1, " "
1820 T=TC : PE=P : GOSUB 4500 : PE=PTEMP
T=0 : REM DUMMY VALUE
FOR J=1 TO SPECIES
CP(0,J)=FNA(T1,CP(T1,J),T2,CP(T2,J),TC)
NEXT J
CPBAR=0
FOR J=1 TO SPECIES
CPBAR=CPBAR+CP(0,J)*XC(J)
NEXT J
GC=CPBAR/(CPBAR-1.9872)
PRINT #1, " "
PRINT #1, "Ratio of specific heats: ";
PRINT #1, USING "##.###";GC
PRINT #1, " "
PRINT #1, " "
2000 REM ****************************************************
REM * FROZEN FLOW CALCULATIONS *
REM ****************************************************
CLS
FOR I=1 TO 11 : PRINT : NEXT I
COLOR 27
PRINT " Working on Frozen Flow Calculations."
COLOR 7
PRINT #1, " "
PRINT #1, TAB(18) "*********** FROZEN FLOW CALCULATIONS **********"
PRINT #1, TAB(18) " ------------------------"
PRINT #1, " "
T=0 : REM DUMMY VALUE
FOR J=1 TO SPECIES
CP(0,J)=FNA(T1,CP(T1,J),T2,CP(T2,J),TC)
NEXT J
CPBAR=0
FOR J=1 TO SPECIES
CPBAR=CPBAR+CP(0,J)*XC(J)
NEXT J
GC=CPBAR/(CPBAR-1.9872)
GOSUB 6000
TEP=TC/(1+((GC-1)/2)*MACH^2)
T=0 : T1=INT(TEP) : T2=INT(TEP)+1
FOR J=1 TO SPECIES
K(0,J)=FNA(T1,K(T1,J),T2,K(T2,J),TEP)
CP(0,J)=FNA(T1,CP(T1,J),T2,CP(T2,J),TEP)
NEXT J
CPBAR=0
FOR J=1 TO SPECIES
CPBAR=CPBAR+CP(0,J)*XC(J)
NEXT J
GE=CPBAR/(CPBAR-1.9872)
GAMMA=(GE+GC)/2
PRINT #1, "Average ratio of specific heats: ";
PRINT #1, USING "##.###";GAMMA
ATHROAT=ATHROAT*.092903 : REM UNIT CONVERSION
R=8314.34/MC
PC=P*101325!
TEMP1=(GAMMA+1)/(2*(GAMMA-1))
TEMP2=ATHROAT*PC*SQR(GAMMA)
TEMP3=SQR(R*TC*100)
TEMP4=1+(GAMMA-1)/2
MDOT=(TEMP2/TEMP3)*TEMP4^-TEMP1
REM UNIT CONVERSION
MDOT=MDOT/.45359237#
PRINT #1, "Mass flow rate (mdot): ";
PRINT #1, USING "#.####^^^^";MDOT;
PRINT #1, " lbm/sec."
REM LIE TO SUBROUTINE
GC=GAMMA : REM LIE TO SUBROUTINE
GOSUB 6000
TEMP1=GAMMA/(GAMMA-1)
TEMP2=1+((GAMMA-1)/2)*MACH^2
PE=P*TEMP2^-TEMP1
PRINT #1, "Pressure at exit: ";
PRINT #1, USING "#.####^^^^";PE;
PRINT #1, " atm. (";
PRINT #1, USING "#.####^^^^";PE*14.696;
PRINT #1, " psia)"
TE=(1/TEMP2)*TC*100
PRINT #1, "Temperature at exit: ";
PRINT #1, USING "####.##";TE;
PRINT #1, " Kelvin"
UE=MACH*SQR(GAMMA*R*TE)
UE=UE/.3048 : REM UNIT CONVERSION
PRINT #1, "Exit velocity: ";
PRINT #1, USING "#.####^^^^";UE;
PRINT #1, " ft/sec."
PRINT #1, " "
PRINT #1, "Thrust at sea-level: ";
PATM=2116.224
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust at 10,000 ft: ";
PATM=1455.4
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust at 25,000 ft: ";
PATM=785.3
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust at 50,000 ft: ";
PATM=242.2
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust at 75,000 ft: ";
PATM=73.6
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust at 100,000 ft: ";
PATM=22.4
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust at 150,000 ft: ";
PATM=3.003
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust in a vacuum: ";
PATM=0
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, " "
PRINT #1, " "
PRINT #1, " "
2450 PRINT #1, " "
2500 REM ************************************************************
REM * EQUILIBRIUM FLOW CALCULATIONS *
REM ************************************************************
CLS
IF TE<=LIMIT*100 THEN
FOR I=1 TO 7 : PRINT : NEXT I
PRINT CHR$(7)
COLOR 4
PRINT " This engine is near a computational limit of the program."
COLOR 7 : PRINT : PRINT : PRINT
PRINT " Proceeding with the Equilibrium Flow Calculations will probably cause a"
PRINT " mathematical overflow or similar error."
PRINT
COLOR 20
PRINT " You've been warned......" : COLOR 7
PRINT
PRINT " To abort, hit return. To continue with the Equilibrium Flow Calculations,"
PRINT " type anything else." : PRINT CHR$(7)
FOR I=1 TO 3 : PRINT : NEXT I
INPUT " ABORT <YES>";B$ : COLOR 7
IF B$<>"" THEN 2525
PRINT #1, " "
PRINT #1, TAB(16) "********** EQUILIBRIUM FLOW CALCULATIONS **********"
PRINT #1, TAB(16) " -----------------------------"
PRINT #1, " "
PRINT #1, TAB(16) "Numerical Difficulties Encountered -- Not Calculated."
GOTO 2995
END IF
2525 CLS
FOR I=1 TO 11 : PRINT : NEXT I
COLOR 27
PRINT " Working on Equilibrium Flow Calculations."
COLOR 7
PRINT #1, " "
PRINT #1, TAB(16) "********** EQUILIBRIUM FLOW CALCULATIONS **********"
PRINT #1, TAB(16) " -----------------------------"
PRINT #1, " "
R=1.9872 : REM UNIVERSAL GAS CONSTANT IN CAL/MOLE-K
REM ITERATE ON TE UNTIL ME*SC=MC*SE
REM ANALYZE TO TYPICAL POINTS AND INTERPOLATE (EXTRAPOLATE) TO
REM START IT OFF
TL=7 : TR=30
2575 REM GENERATE SE FOR THE ENDPOINTS
T=TL : GOSUB 3500 : GOSUB 5500
SLOW=MW*SC-MC*SE
T=TR : GOSUB 3500 : GOSUB 5500
SHIGH=MW*SC-MC*SE
IF SLOW*SHIGH<0 THEN 2610 : REM FAIL-SAFE
TL=INT((LIMIT+TL)/2) : TR=INT((TR+TMAX)/2) : GOTO 2575
2610 TE=FNA(SLOW,TL,SHIGH,TR,0)
T1=INT(TE) : T2=INT(TE)+1
REM ENTER A "WHILE-DO" LOOP TO ITERATE ON TE UNTIL ME*SC=MC*SE
T=0 : REM DUMMY VALUE
REM INTERPOLATE BETWEEN JANAF TABLE VALUES
FOR J=1 TO SPECIES
K(0,J)=FNA(T1,K(T1,J),T2,K(T2,J),TE)
S(0,J)=FNA(T1,S(T1,J),T2,S(T2,J),TE)
QI(0,J)=FNA(T1,QI(T1,J),T2,QI(T2,J),TE)
NEXT J
REM FIND COMPOSITION AT TE
GOSUB 3500
REM FIND SNET
GOSUB 5500
SNET=MW*SC-MC*SE
IF ABS(SNET)<.0005 THEN 2700
IF SNET>0 THEN T2=INT(TE+.5) : TR=TE : SHIGH=SNET : GOTO 2610
IF SNET<0 THEN T1=INT(TE) : TL=TE : SLOW=SNET : GOTO 2610
2700 REM SNET IS ZERO OR CLOSE TO IT, SO TE HAS BEEN FOUND
FOR I=1 TO SPECIES : XE(I)=X(I) : NEXT I : ME=MW : REM SAVE VALUES AT EXIT
REM FIND QNET FOR PRINTING PURPOSES
GOSUB 4000
T=TE
PRINT #1, "EQUILIBRIUM FLOW EXIT PROPERTIES:"
GOSUB 4500
PRINT #1, " "
PRINT #1, " "
PRINT #1, " "
PRINT #1, " "
REM FIND THRUST FOR EQUILIBRIUM FLOW
HBARTC=0 : T1=INT(TC) : T2=INT(TC)+1
FOR I=1 TO SPECIES
QI(0,I)=FNA(T1,QI(T1,I),T2,QI(T2,I),TC)
NEXT I
FOR I=1 TO SPECIES
HBARTC=HBARTC+XC(I)*(QO(I)+QI(O,I))
NEXT I
HBARTE=0 : T1=INT(TE) : T2=INT(TE)+1
FOR I=1 TO SPECIES
QI(0,I)=FNA(T1,QI(T1,I),T2,QI(T2,I),TE)
NEXT I
FOR I=1 TO SPECIES
HBARTE=HBARTE+XE(I)*(QO(I)+QI(O,I))
NEXT I
TEMP1=(2/MC)*(HBARTC-(MC/ME)*HBARTE)
TEMP1=TEMP1*4184000! : REM UNIT CONVERSION
UE=SQR(TEMP1)*3.2808399# : REM CONVERT TO FT/SEC
PRINT #1, "Average ratio of specific heats: ";
PRINT #1, USING "##.###";GAMMA
PRINT #1, "Mass flow rate (mdot): ";
PRINT #1, USING "#.####^^^^";MDOT;
PRINT #1, " lbm/sec."
PRINT #1, "Pressure at exit: ";
PRINT #1, USING "#.####^^^^";PE;
PRINT #1, " atm. (";
PRINT #1, USING "#.####^^^^";PE*14.696;
PRINT #1, " psia)"
PRINT #1, "Temperature at exit: ";
PRINT #1, USING "####.##";TE*100;
PRINT #1, " Kelvin."
PRINT #1, "Exit Velocity: ";
PRINT #1, USING "#.####^^^^";UE;
PRINT #1, " ft/sec."
PRINT #1, " "
PRINT #1, "Thrust at sea-level: ";
PATM=2116.224
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust at 10,000 ft: ";
PATM=1455.4
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust at 25,000 ft: ";
PATM=785.3
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust at 50,000 ft: ";
PATM=242.2
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust at 75,000 ft: ";
PATM=73.6
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust at 100,000 ft: ";
PATM=22.4
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust at 150,000 ft: ";
PATM=3.003
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
PRINT #1, "Thrust in a vacuum: ";
PATM=0
CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
2995 PRINT #1, " "
A$="Normal Termination on "+date$+" at "+time$
CEN=(85-LEN(A$))/2
PRINT #1, TAB(CEN) A$
3000 FOR I=1 TO 7 : PRINT #1, " " : NEXT I
REM RING BELL TO INDICATE THE END OF THE PROGRAM HAS BEEN REACHED
PRINT CHR$(7)
CLS : FOR I=1 TO 11 : PRINT : NEXT I
COLOR 27 : PRINT " DONE!" : COLOR 7
3025 FOR I=1 TO 10 : PRINT : NEXT I
INPUT " ANOTHER ANALYSIS <YES>";A$
IF A$="Y" THEN 3060
IF A$="y" THEN 3060
IF A$="YES" THEN 3060
IF A$="yes" THEN 3060
IF A$<>"" THEN 3100
3060 INPUT " APPEND TO THE END OF THE SAME OUTPUT FILE <YES>";A$
IF A$="Y" THEN 1345
IF A$="y" THEN 1345
IF A$="YES" THEN 1345
IF A$="yes" THEN 1345
IF A$="" THEN 1345
CLOSE #1 : GOTO 1310
3100 COLOR 1,7,7 : CLS
FOR I=1 TO 7 : PRINT : NEXT I
PRINT " Thank you for using H2O2......."
PRINT : PRINT : PRINT : PRINT
PRINT " ......Public Domain Engineering Software by Kerry Hicks."
PRINT
FOR I=1 TO 7 : PRINT : NEXT I
PRINT " Hit Any Key to Leave H2O2......."; : COLOR 7
PRINT
PRINT
A$=""
3110 A$=INKEY$
IF A$="" THEN 3110
COLOR 7,0,0
CLS
END
3500 REM *********************************************************
REM * SUBROUTINE FOR FINDING COMPOSITION AT ANY TEMPERATURE *
REM *********************************************************
REM NOTE THAT THE STARTING VALUES OF N AND N1 CAN BE MODIFIED
REM FOR EACH PROBLEM TO SPEED UP THE PROGRAM
NN=NN*1.001
N=NN/2 : NN=NN*1.5 : NUMIT=0
3535 IF ABS(N-NN)<=.00005 THEN 3725
N=(N+NN)/2
NP=(N/P)^.5
REM BISECTION ROUTINE ON N(1) -- H2 IN PROBLEM 19
XL=1.0E-30 : XR=MH2*1.01
REM FIND YL
B=FNBX(K(T,3),K(T,6),XL,NP)
N(2)=FNO2(K(T,4),XL,B,NP)
IF N(2)<1.0e-37 THEN N(2)=1.0E-30
N(3)=FNW(K(T,3),XL,N(2),NP) : N(5)=FNO(K(T,5),N(2),NP)
N(6)=FNOH(K(T,6),XL,N(2)) : YL=2*N(2)+N(3)+N(5)+N(6)-2
3590 N(1)=(XL+XR)/2
NUMIT=NUMIT+1 : IF NUMIT<5000 THEN 3660
PRINT CHR$(7)
PRINT " Program seems to be failing -- input data may be at fault or"
PRINT " the engine may be so extreme that it exceeds the limits of this"
PRINT " program. ";
COLOR 4
PRINT "(Is your engine REALISTIC?).";
COLOR 7
PRINT " To abort";CHR$(44);" hit return. "
PRINT " To continue this for another 5000 iterations";CHR$(44);" type anything else."
INPUT " ABORT <YES>";B$ : NUMIT=0
IF B$<>"" THEN 3660
GOTO 6555
3660 REM FIND YM
B=FNBX(K(T,3),K(T,6),N(1),NP)
N(2)=FNO2(K(T,4),N(1),B,NP)
IF N(2)<1.0e-37 THEN N(2)=1.0E-30
N(3)=FNW(K(T,3),N(1),N(2),NP) : N(5)=FNO(K(T,5),N(2),NP)
N(6)=FNOH(K(T,6),N(1),N(2)) : YM=2*N(2)+N(3)+N(5)+N(6)-2
IF (XR-XL)/2 <.00001 THEN 3700
IF YM*YL > 0 THEN XL=N(1) : GOTO 3590
XR=N(1) : GOTO 3590
3700 N(4)=FNH(K(T,4),N(1),NP)
REM FORM NEW ESTIMATE OF N -- CALL IT NN
NN=0
FOR I=1 TO SPECIES : NN=NN+N(I) : NEXT I
GOTO 3535
3725 REM NOW THAT WE HAVE N, FORM MOLE FRACTIONS -- X(I)'S
FOR I=1 TO SPECIES : X(I)=N(I)/NN : NEXT I
REM FIND MOLECULAR WEIGHT
GOSUB 5000
3745 RETURN
4000 REM ***********************************************************
REM * SUBROUTINE FOR FINDING Q3, QIN, QNET AT A GIVEN TEMP *
REM ***********************************************************
QIN=0 : Q3=0
FOR I=1 TO SPECIES
QIN=QIN+N(I)*QI(T,I)
Q3=Q3+N(I)*QO(I)
NEXT I
QIN=QIN+Q : QNET=QIN+Q3 : Q3=-Q3
4045 RETURN
4500 REM ***********************************************************
REM * SUBROUTINE TO PRINT REACTION DATA *
REM ***********************************************************
PRINT #1, "Temperature=";
PRINT #1, USING "####.##";T*100;
PRINT #1, " Kelvin"
PRINT #1, "Reaction Equation Coefficients and Mole Fractions:"
PRINT #1, " "
FOR I=1 TO SPECIES
IF X(I)<=1E-30 THEN
X(I)=0
N(I)=0
END IF
PRINT #1, N$(I),"N=";
PRINT #1, USING "#.####^^^^";N(I);
PRINT #1, TAB(45)"X=";
PRINT #1, USING "#.####^^^^";X(I)
NEXT I
PRINT #1, " "
PRINT #1, " Total N=";
PRINT #1, USING "#.####^^^^";NN
PRINT #1, " Molecular Weight of Mixture=";
PRINT #1, USING "#.####^^^^";MW
PRINT #1, " Qin=";
PRINT #1, USING "+#.####^^^^";QIN;
PRINT #1, " kcal"
PRINT #1, " Qout=";
PRINT #1, USING "+#.####^^^^";Q3;
PRINT #1, " kcal"
PRINT #1, " Qnet=";
PRINT #1, USING "+#.####^^^^";QNET;
PRINT #1, " kcal"
PRINT #1, " P=";
PRINT #1, USING "#.####^^^^";PE;
PRINT #1, " atm"
PRINT #1, " S=";
PRINT #1, USING "#.####^^^^";SE;
PRINT #1, " cal/(mole K)"
4680 RETURN
5000 REM *************************************************************
REM * MOLECULAR WEIGHT *
REM *************************************************************
MW=0
FOR I=1 TO SPECIES
MW=MW+X(I)*M(I)
NEXT I
5035 RETURN
5500 REM *************************************************************
REM * SE CALCULATION *
REM *************************************************************
SE=0
FOR I=1 TO SPECIES
REM PREVENT OVERFLOW
IF X(I)<1E-37 THEN X(I)=1E-30
SE=SE+(X(I)*(S(T,I)-R*(LOG(PE)+LOG(X(I)))))
NEXT I
5545 RETURN
6000 REM **************************************************************
REM * SUBROUTINE TO FIND EXIT MACH NUMBER *
REM **************************************************************
MLOW=1 : MHIGH=50
6020 ARHIGH=FNAR(MHIGH,GC)
6025 ARLOW=FNAR(MLOW,GC)
MACH=(MLOW+MHIGH)/2
ARMID=FNAR(MACH,GC)
IF ABS(AREAR-ARMID)<.0005 THEN 6120
NUMIT=NUMIT+1
IF NUMIT<5000 THEN 6110
PRINT " Program appears to be failing to find an exit mach number"
PRINT " between 1 and 50. If you are SURE your engine is REALISTIC";CHR$(44)
PRINT " input an upper search limit for the mach number. (This limit"
PRINT " will be used only for this iteration.) To abort this run";CHR$(44);" enter"
PRINT " a negative value. ";
COLOR 4
PRINT "(WARNING -- RAISING THE LIMIT TOO HIGH CAN "
PRINT " CAUSE THE PROGRAM TO CRASH!)" : COLOR 7 : PRINT
INPUT " New upper limit on exit mach number";MHIGH
IF MHIGH<=0 THEN COLOR 7,0,0 : GOTO 6555
NUMIT=0 : MLOW=1 : GOTO 6020
6110 IF AREAR-ARMID>0 THEN MLOW=MACH : GOTO 6025
IF AREAR-ARMID<0 THEN MHIGH=MACH : ARHIGH=FNAR(MHIGH,GC) : GOTO 6020
6120 REM FOUND EXIT MACH NUMBER
6125 RETURN
OOPS:
REM ******************************************************************
REM * DAMN -- SOMETHING WENT WRONG ABORT ROUTINE *
REM ******************************************************************
REM
PRINT CHR$(7) : CLS
COLOR 20
PRINT " SOMETHING TERRIBLE HAS GONE WRONG!"
COLOR 7
PRINT
IERROR=ERR
IF IERROR=64 OR IERROR=52 THEN
PRINT " The error trapping routine indicates that an error has occurred while"
PRINT " attempting to open the output file. Names must be legal DOS file names."
PRINT
RESUME 1310
END IF
IF IERROR=61 THEN
PRINT " Your disk is full! You will have to start this run over with a new"
PRINT " data disk!"
CLOSE #1
RESUME 1310
END IF
IF IERROR=57 OR IERROR=68 OR IERROR=71 THEN
PRINT " Check output device/drive!"
RESUME 1310
END IF
IF IERROR=72 THEN
PRINT " Media Error! Bad Disk?"
CLOSE #1
RESUME 1310
END IF
PRINT " Whatever it was that caused this error was severe enough to cause"
PRINT " a fatal BASIC error. BASIC Error Number "; IERROR; " on or about line"
PRINT " number/line label ";ERL;" seems to have been at fault." : PRINT
IF IERROR=5 THEN
PRINT " If this error occurred during the Equilibrium Flow Calculations, then"
PRINT " the thermochemistry of your engine prevents these calculations."
PRINT
END IF
6555 PRINT " Do you want a copy of the major variables in use to be dumped to "
INPUT " your output file <YES>";A$
IF A$="Y" THEN 6590
IF A$="y" THEN 6590
IF A$="YES" THEN 6590
IF A$="yes" THEN 6590
IF A$<>"" THEN
PRINT #1, " "
PRINT #1, " "
A$="Study ABORTED on "+date$+" at "+time$
CEN=(85-LEN(A$))/2
PRINT #1, TAB(CEN) A$
FOR I=1 TO 7 : PRINT #1, " " : NEXT I
GOTO 3025
END IF
6590 PRINT #1, " " : PRINT #1, " "
PRINT #1, TAB(16) "OOPS......SOMETHING WHEN WRONG......VARIABLES IN USE:"
PRINT #1, "TC=";TC
PRINT #1, "TE=";TE
PRINT #1, "T=";T
GOSUB 4500
PRINT #1, " " : PRINT #1, " " : PRINT #1, " "
A$="Study ABORTED on "+date$+" at "+time$
IF IERROR<>0 THEN
A$=A$+" due to BASIC Error Number "+STR$(IERROR)
END IF
CEN=(85-LEN(A$))/2
PRINT #1, TAB(CEN) A$;
FOR I=1 TO 7 : PRINT #1, " " : NEXT I
6615 GOTO 3025
SUB TCALC(MDOT,UE,PE,PATM,AEXIT) STATIC
THRUST=(MDOT*UE)/32.17+(PE*2116.224-PATM)*AEXIT
PRINT #1, USING "+#.####^^^^";THRUST;
PRINT #1, " lbf."
IF THRUST<0 THEN
PRINT #1, "(Negative thrust -- out of the engine's operating range.)"
END IF
PRINT #1, " "
END SUB
REM DATA STATEMENTS FROM HERE DOWN REPLACE THE OLD DATA FILE
DATA 0.0,0.0,-57.798,52.102,59.559,9.330
DATA "Diatomic Hydrogen",2.0158
DATA 0.0,-1.265,24.387,5.393
DATA 0.0,-0.662,28.520,6.518
DATA 0.0,0.013,31.251,6.894
DATA 0.0,0.707,33.247,6.975
DATA 0.0,1.406,34.806,6.993
DATA 0.0,2.106,36.082,7.009
DATA 0.0,2.808,37.165,7.036
DATA 0.0,3.514,38.107,7.087
DATA 0.0,4.226,38.946,7.148
DATA 0.0,4.944,39.702,7.219
DATA 0.0,5.670,40.394,7.300
DATA 0.0,6.404,41.033,7.390
DATA 0.0,7.148,41.628,7.490
DATA 0.0,7.902,42.187,7.600
DATA 0.0,8.668,42.716,7.720
DATA 0.0,9.446,43.217,7.823
DATA 0.0,10.233,43.695,7.921
DATA 0.0,11.030,44.150,8.016
DATA 0.0,11.836,44.586,8.108
DATA 0.0,12.651,45.004,8.195
DATA 0.0,13.475,45.406,8.279
DATA 0.0,14.307,45.793,8.358
DATA 0.0,15.146,46.166,8.434
DATA 0.0,15.993,46.527,8.506
DATA 0.0,16.848,46.875,8.575
DATA 0.0,17.708,47.213,8.639
DATA 0.0,18.575,47.540,8.700
DATA 0.0,19.448,47.857,8.757
DATA 0.0,20.326,48.166,8.810
DATA 0.0,21.210,48.465,8.859
DATA 0.0,22.098,48.756,8.891
DATA 0.0,22.992,49.040,8.962
DATA 0.0,23.891,49.317,9.012
DATA 0.0,24.794,49.586,9.061
DATA 0.0,25.703,49.850,9.110
DATA 0.0,26.616,50.107,9.158
DATA 0.0,27.535,50.359,9.205
DATA 0.0,28.457,50.605,9.252
DATA 0.0,29.385,50.846,9.297
DATA 0.0,30.317,51.082,9.342
DATA 0.0,31.253,51.313,9.386
DATA 0.0,32.194,51.540,9.429
DATA 0.0,33.139,51.762,9.472
DATA 0.0,34.088,51.980,9.514
DATA 0.0,35.042,52.194,9.555
DATA 0.0,35.999,52.405,9.595
DATA 0.0,36.961,52.612,9.634
DATA 0.0,37.926,52.815,9.673
DATA 0.0,38.895,53.015,9.711
DATA 0.0,39.868,53.211,9.748
DATA 0.0,40.845,53.405,9.785
DATA 0.0,41.825,53.595,9.822
DATA 0.0,42.809,53.783,9.859
DATA 0.0,43.797,53.967,9.895
DATA 0.0,44.788,54.149,9.930
DATA 0.0,45.783,54.328,9.965
DATA 0.0,46.781,54.505,10.000
DATA 0.0,47.783,54.679,10.034
DATA 0.0,48.788,54.851,10.067
DATA 0.0,49.796,55.020,10.100
DATA "Diatomic Oxygen",31.9988
DATA 0.0,-1.362,41.522,6.741
DATA 0.0,-0.682,46.233,6.871
DATA 0.0,0.013,49.047,7.023
DATA 0.0,0.724,51.091,7.196
DATA 0.0,1.455,52.722,7.431
DATA 0.0,2.210,54.098,7.670
DATA 0.0,2.988,55.297,7.883
DATA 0.0,3.786,56.361,8.063
DATA 0.0,4.600,57.320,8.212
DATA 0.0,5.427,58.192,8.336
DATA 0.0,6.266,58.991,8.439
DATA 0.0,7.114,59.729,8.527
DATA 0.0,7.971,60.415,8.604
DATA 0.0,8.835,61.055,8.674
DATA 0.0,9.706,61.656,8.738
DATA 0.0,10.583,62.222,8.800
DATA 0.0,11.465,62.757,8.858
DATA 0.0,12.354,63.265,8.916
DATA 0.0,13.249,63.749,8.973
DATA 0.0,14.149,64.210,9.029
DATA 0.0,15.054,64.652,9.084
DATA 0.0,15.966,65.076,9.139
DATA 0.0,16.882,65.483,9.194
DATA 0.0,17.804,65.876,9.248
DATA 0.0,18.732,66.254,9.301
DATA 0.0,19.664,66.620,9.354
DATA 0.0,20.602,66.974,9.405
DATA 0.0,21.545,67.317,9.455
DATA 0.0,22.493,67.650,9.503
DATA 0.0,23.446,67.973,9.551
DATA 0.0,24.403,68.287,9.596
DATA 0.0,25.365,68.592,9.640
DATA 0.0,26.331,68.889,9.682
DATA 0.0,27.307,69.179,9.723
DATA 0.0,28.276,69.461,9.762
DATA 0.0,29.254,69.737,9.799
DATA 0.0,30.236,70.006,9.835
DATA 0.0,31.221,70.269,9.869
DATA 0.0,32.209,70.525,9.901
DATA 0.0,33.201,70.776,9.932
DATA 0.0,34.196,71.022,9.961
DATA 0.0,35.193,71.262,9.988
DATA 0.0,36.193,71.498,10.015
DATA 0.0,37.196,71.728,10.039
DATA 0.0,38.201,71.954,10.062
DATA 0.0,39.208,72.176,10.084
DATA 0.0,40.218,72.393,10.104
DATA 0.0,41.229,72.606,10.123
DATA 0.0,42.242,72.814,10.140
DATA 0.0,43.257,73.019,10.156
DATA 0.0,44.274,73.221,10.172
DATA 0.0,45.292,73.418,10.187
DATA 0.0,46.311,73.613,10.200
DATA 0.0,47.332,73.803,10.213
DATA 0.0,48.353,73.991,10.225
DATA 0.0,49.377,74.175,10.237
DATA 0.0,50.401,74.356,10.247
DATA 0.0,51.426,74.535,10.258
DATA 0.0,52.452,74.710,10.267
DATA 0.0,53.479,74.883,10.276
DATA "Water ",18.0152
DATA 123.600,-1.581,36.396,7.961
DATA 60.792,-0.784,41.916,7.969
DATA 39.786,0.015,45.155,8.027
DATA 29.240,0.825,47.484,8.186
DATA 22.886,1.654,49.334,8.415
DATA 18.633,2.509,50.891,8.676
DATA 15.583,3.390,52.249,8.954
DATA 13.289,4.300,53.464,9.246
DATA 11.498,5.240,54.570,9.547
DATA 10.062,6.209,55.592,9.851
DATA 8.883,7.210,56.545,10.152
DATA 7.899,8.240,57.441,10.444
DATA 7.064,9.298,58.288,10.723
DATA 6.347,10.384,59.092,10.987
DATA 5.725,11.495,59.859,11.233
DATA 5.180,12.630,60.591,11.462
DATA 4.699,13.787,61.293,11.674
DATA 4.270,14.964,61.965,11.869
DATA 3.886,16.160,62.612,12.048
DATA 3.540,17.373,63.234,12.214
DATA 3.227,18.602,63.834,12.366
DATA 2.942,19.846,64.412,12.505
DATA 2.682,21.103,64.971,12.634
DATA 2.443,22.372,65.511,12.753
DATA 2.224,23.653,66.034,12.863
DATA 2.021,24.945,66.541,12.965
DATA 1.833,26.246,67.032,13.059
DATA 1.658,27.556,67.508,13.146
DATA 1.495,28.875,67.971,13.228
DATA 1.343,30.201,68.421,13.304
DATA 1.201,31.535,68.858,13.374
DATA 1.067,32.876,69.284,13.441
DATA 0.942,34.223,69.698,13.503
DATA 0.824,35.577,70.102,13.562
DATA 0.712,36.936,70.496,13.617
DATA 0.607,38.300,70.881,13.669
DATA 0.507,39.669,71.256,13.718
DATA 0.413,41.043,71.622,13.764
DATA 0.323,42.422,71.980,13.808
DATA 0.238,43.805,72.331,13.850
DATA 0.157,45.192,72.673,13.890
DATA 0.079,46.583,73.008,13.927
DATA 0.005,47.977,73.336,13.963
DATA -0.065,49.375,73.658,13.997
DATA -0.133,50.777,73.973,14.030
DATA -0.197,52.181,74.281,14.061
DATA -0.259,53.589,74.584,14.091
DATA -0.319,55.000,74.881,14.120
DATA -0.376,56.413,75.172,14.148
DATA -0.430,57.829,75.459,14.174
DATA -0.483,59.248,75.740,14.201
DATA -0.534,60.669,76.016,14.228
DATA -0.583,62.093,76.287,14.254
DATA -0.630,63.520,76.553,14.279
DATA -0.675,64.949,76.816,14.303
DATA -0.719,66.381,77.074,14.328
DATA -0.762,67.815,77.327,14.351
DATA -0.803,69.251,77.577,14.375
DATA -0.842,70.690,77.823,14.398
DATA -0.880,72.131,78.065,14.422
DATA "Monatomic Hydrogen",1.0079
DATA -110.96,-0.984,21.965,4.968
DATA -54.324,-0.488,25.408,4.968
DATA -35.378,0.009,27.423,4.968
DATA -25.877,0.506,28.852,4.968
DATA -20.159,1.003,29.961,4.968
DATA -16.337,1.500,30.867,4.968
DATA -13.599,1.996,31.632,4.968
DATA -11.540,2.493,32.296,4.968
DATA -9.934,2.990,32.881,4.968
DATA -8.646,3.487,33.404,4.968
DATA -7.590,3.984,33.878,4.968
DATA -6.707,4.481,34.310,4.968
DATA -5.958,4.977,34.708,4.968
DATA -5.315,5.474,35.076,4.968
DATA -4.757,5.971,35.419,4.968
DATA -4.267,6.468,35.739,4.968
DATA -3.834,6.965,36.041,4.968
DATA -3.448,7.461,36.325,4.968
DATA -3.102,7.958,36.593,4.968
DATA -2.791,8.455,36.848,4.968
DATA -2.508,8.952,37.090,4.968
DATA -2.251,9.449,37.322,4.968
DATA -2.016,9.945,37.542,4.968
DATA -1.800,10.442,37.754,4.968
DATA -1.601,10.939,37.957,4.968
DATA -1.418,11.436,38.152,4.968
DATA -1.247,11.933,38.339,4.968
DATA -1.089,12.430,38.520,4.968
DATA -0.941,12.926,38.694,4.968
DATA -0.803,13.423,38.862,4.968
DATA -0.674,13.920,39.025,4.968
DATA -0.553,14.417,39.183,4.968
DATA -0.439,14.914,39.336,4.968
DATA -0.332,15.410,39.484,4.968
DATA -0.231,15.907,39.628,4.968
DATA -0.135,16.404,39.768,4.968
DATA -0.044,16.901,39.904,4.968
DATA 0.041,17.398,40.037,4.968
DATA 0.123,17.895,40.166,4.968
DATA 0.200,18.391,40.292,4.968
DATA 0.274,18.888,40.414,4.968
DATA 0.344,19.385,40.534,4.968
DATA 0.412,19.882,40.651,4.968
DATA 0.476,20.379,40.765,4.968
DATA 0.537,20.875,40.877,4.968
DATA 0.595,21.372,40.986,4.968
DATA 0.651,21.869,41.093,4.968
DATA 0.705,22.366,41.198,4.968
DATA 0.757,22.863,41.300,4.968
DATA 0.806,23.359,41.400,4.968
DATA 0.854,23.856,41.499,4.968
DATA 0.900,24.353,41.595,4.968
DATA 0.944,24.850,41.690,4.968
DATA 0.986,25.347,41.783,4.968
DATA 1.027,25.844,41.874,4.968
DATA 1.066,26.340,41.963,4.968
DATA 1.104,26.837,42.051,4.968
DATA 1.141,27.334,42.138,4.968
DATA 1.177,27.831,42.223,4.968
DATA 1.211,28.328,42.306,4.968
DATA "Monatomic Oxygen",15.9994
DATA -126.73,-1.080,32.466,5.666
DATA -61.992,-0.523,36.340,5.434
DATA -40.334,0.010,38.501,5.235
DATA -29.473,0.528,39.991,5.135
DATA -22.940,1.038,41.131,5.081
DATA -18.574,1.544,42.054,5.049
DATA -15.449,2.048,42.831,5.029
DATA -13.101,2.550,43.501,5.015
DATA -11.272,3.052,44.092,5.006
DATA -9.807,3.552,44.619,4.999
DATA -8.606,4.051,45.095,4.994
DATA -7.604,4.551,45.529,4.990
DATA -6.755,5.049,45.928,4.987
DATA -6.027,5.548,46.298,4.984
DATA -5.395,6.046,46.642,4.982
DATA -4.842,6.544,46.963,4.981
DATA -4.353,7.042,47.265,4.979
DATA -3.918,7.540,47.550,4.979
DATA -3.529,8.038,47.819,4.978
DATA -3.178,8.536,48.074,4.978
DATA -2.860,9.034,48.317,4.978
DATA -2.571,9.532,48.549,4.979
DATA -2.307,10.029,48.770,4.980
DATA -2.065,10.527,48.982,4.981
DATA -1.842,11.026,49.185,4.984
DATA -1.636,11.524,49.381,4.986
DATA -1.446,12.023,49.569,4.990
DATA -1.268,12.522,49.751,4.994
DATA -1.103,13.022,49.926,4.999
DATA -0.949,13.522,50.096,5.004
DATA -0.805,14.023,50.260,5.010
DATA -0.670,14.524,50.419,5.017
DATA -0.543,15.026,50.573,5.025
DATA -0.423,15.529,50.724,5.033
DATA -0.310,16.033,50.870,5.041
DATA -0.204,16.537,51.012,5.050
DATA -0.103,17.043,51.150,5.060
DATA -0.007,17.549,51.285,5.070
DATA 0.084,18.057,51.417,5.081
DATA 0.170,18.565,51.546,5.091
DATA 0.252,19.075,51.672,5.103
DATA 0.330,19.586,51.795,5.114
DATA 0.404,20.098,51.915,5.126
DATA 0.475,20.611,52.033,5.138
DATA 0.543,21.126,52.149,5.150
DATA 0.608,21.641,52.262,5.162
DATA 0.671,22.158,52.373,5.174
DATA 0.730,22.676,52.482,5.186
DATA 0.788,23.195,52.589,5.198
DATA 0.843,23.715,52.695,5.210
DATA 0.895,24.237,52.798,5.222
DATA 0.946,24.760,52.899,5.234
DATA 0.995,25.284,52.999,5.246
DATA 1.042,25.809,53.097,5.258
DATA 1.088,26.335,53.194,5.269
DATA 1.132,26.863,53.289,5.280
DATA 1.174,27.392,53.383,5.292
DATA 1.215,27.921,53.475,5.302
DATA 1.254,28.452,53.565,5.313
DATA 1.292,28.984,53.655,5.323
DATA "Hydroxyl ",17.0074
DATA -19.464,-1.451,35.852,7.567
DATA -9.361,-0.707,41.021,7.309
DATA -5.964,0.013,43.962,7.134
DATA -4.264,0.724,46.006,7.077
DATA -3.244,1.430,47.582,7.049
DATA -2.565,2.134,48.867,7.053
DATA -2.082,2.841,49.956,7.087
DATA -1.720,3.553,50.906,7.148
DATA -1.441,4.272,51.753,7.232
DATA -1.218,5.000,52.520,7.329
DATA -1.037,5.738,53.223,7.436
DATA -0.887,6.487,53.875,7.548
DATA -0.760,7.247,54.483,7.657
DATA -0.652,8.018,55.055,7.764
DATA -0.559,8.800,55.594,7.866
DATA -0.477,9.591,56.105,7.963
DATA -0.406,10.392,56.590,8.052
DATA -0.343,11.202,57.053,8.136
DATA -0.286,12.019,57.495,8.213
DATA -0.236,12.844,57.918,8.285
DATA -0.190,13.676,58.324,8.352
DATA -0.149,14.514,58.714,8.414
DATA -0.111,15.358,59.089,8.470
DATA -0.077,16.208,59.451,8.523
DATA -0.046,17.063,59.800,8.573
DATA -0.017,17.923,60.137,8.621
DATA 0.010,18.787,60.463,8.664
DATA 0.034,19.655,60.779,8.704
DATA 0.057,20.528,61.085,8.742
DATA 0.078,21.404,61.382,8.778
DATA 0.098,22.283,61.670,8.811
DATA 0.116,23.166,61.951,8.843
DATA 0.133,24.052,62.223,8.873
DATA 0.150,24.940,62.488,8.901
DATA 0.165,25.832,62.747,8.929
DATA 0.179,26.726,62.999,8.955
DATA 0.192,27.623,63.244,8.979
DATA 0.205,28.522,63.484,9.002
DATA 0.216,29.423,63.718,9.024
DATA 0.227,30.327,63.947,9.046
DATA 0.238,31.233,64.171,9.067
DATA 0.248,32.140,64.389,9.088
DATA 0.257,33.050,64.603,9.107
DATA 0.266,33.962,64.813,9.125
DATA 0.275,34.875,65.018,9.143
DATA 0.282,35.790,65.219,9.161
DATA 0.290,36.707,65.417,9.177
DATA 0.297,37.626,65.610,9.193
DATA 0.304,38.546,65.800,9.209
DATA 0.311,39.467,65.986,9.225
DATA 0.317,40.391,66.169,9.243
DATA 0.323,41.316,66.348,9.260
DATA 0.328,42.243,66.525,9.276
DATA 0.333,43.171,66.699,9.290
DATA 0.339,44.101,66.869,9.306
DATA 0.343,45.032,67.037,9.320
DATA 0.348,45.965,67.202,9.331
DATA 0.352,46.898,67.364,9.340
DATA 0.357,47.833,67.524,9.354
DATA 0.361,48.769,67.681,9.370